package com.portalito.android.dto;

import java.util.ArrayList;
import java.util.Iterator;

import com.portalito.android.Utils;

public class OrdenCompra extends ObjetoBase {
	
	public final static String ESTADO_COMPLETO = "Completed";
	public final static String ESTADO_AUTORIZADO = "Authorised";
	
	private int id;
	private String estado;
	private String iniciador;
	private String fecha;
	private String proveedor;
	private Usuario usuario;
	private Almacen almacen;
	private ArrayList<Producto> productos;
	
	public OrdenCompra() {
		estado = ESTADO_AUTORIZADO;
		productos = new ArrayList<Producto>();
	}
	
	public int getCantidadProductos() {
		return productos.size();
	}
	
	public boolean agregarProducto(Producto producto) {
		return productos.add(producto);
	}
	
	public Iterator<Producto> obtenerProductosIterator() {
		return productos.iterator();
	}
	
	public void setEstado(String estado) {
		this.estado = estado;
	}
	
	public String getEstado() {
		return estado;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getIniciador() {
		return iniciador;
	}

	public void setIniciador(String iniciador) {
		this.iniciador = iniciador;
	}

	public String getFecha() {
		return fecha;
	}

	public void setFecha(String fecha) {
		this.fecha = fecha;
	}

	public String getProveedor() {
		return proveedor;
	}

	public void setProveedor(String proveedor) {
		this.proveedor = proveedor;
	}

	public Usuario getUsuario() {
		return usuario;
	}
	
	public String getUsuarioId() {
		if(usuario != null) {
			return usuario.getUsuario();
		}
		return "";
	}
	
	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	public Almacen getAlmacen() {
		return almacen;
	}
	
	public String getAlmacenId() {
		if(almacen != null) {
			return almacen.getId();
		}
		return "";
	}

	public void setAlmacen(Almacen almacen) {
		this.almacen = almacen;
	}
	
	public boolean recepcionCompleta() {
		Iterator<Producto> i = obtenerProductosIterator();
		while(i.hasNext()) {
			Producto producto = i.next();
			if(producto.recepcionCompleta() == false) {
				return false;
			}
		}
		return true;
	}
	
	public String toHtml() {
		if(OrdenCompra.esValido(this)) {
			String str = "<b>No:</b> " + id + "<br/>";
			str += "<b>Fecha Orden:</b> " + Utils.cambiarFormatoFecha(fecha) + "<br/>";
			str += "<b>Iniciador:</b> " + iniciador + "<br/>";
			str += "<b>Proveedor:</b> " + proveedor + "<br/>";
			str += "<b>Estado:</b> " +  estado + "<br/>";
			str += "<b>Almacen:</b> " + almacen.getNombre() + "<br/>";
			str += "<b>Usuario:</b> " + usuario.getNombre();
			return str;
		}
		return "";	
	}
	
	public static boolean esValido(OrdenCompra oc) {
		return oc.getAlmacen() != null && oc.getUsuario() != null;
	}
}
